﻿using System;

namespace VarintZigzigDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Test(0);
            Test(127);
            Test(-127);
            Test(sbyte.MaxValue);
            Test(sbyte.MinValue);
            Test(short.MaxValue);
            Test(short.MinValue);
            Test(int.MaxValue);
            Test(int.MinValue);

            Console.ReadKey();
        }

        private static void Test(int value)
        {
            //负数转正数
            var n = VarintUtils.ZigZagEncode(value);
            //要占用的字节长度
            var len = VarintUtils.VarintSize(n);
            //字节流
            var buffer = VarintUtils.VarintEncode(n, len);
            //varint 解析
            var nn = VarintUtils.VarintDecode(buffer);
            //还原
            var nn2 = VarintUtils.ZigZagDecode(nn);
            Console.WriteLine($" raw:{value}  zzen:{n}  varde:{nn} zzde:{nn2} len:{len}");
        }
    }
}
